Several high speed data communications systems are known which employ encodement of transmitted data in a unique way so that byte boundaries can be conveniently recovered and so that DC balance of the coded data is maintained. One such system is known as the 8B/10B code which is described in the article by Widmer et al., entitled "A DC Balanced Partitioned Black, 8B/10B Transmitter Code," "Journal of Research and Development," Volume 27, 1983, pp. 440-451.
As described in the above article, special encoded characters are provided for several command purposes which characters are distinguishable from other valid coded characters even when byte boundaries are incorrectly aligned. One major purpose of such special characters is for synchronization between the transmitter and receiver. In the 8B/10B System, the special characters are generated by the same coding rules used for data encodement regarding disparity, maximum run length and maximum digital sum variation. A first group of eight of the special characters are called K28.X. These special characters can be recognized as other than data because abcdei=001111 or 110000. Valid data code does not have the case c=d=e=i.
By virtue of the 8B/10B rules set forth in the above article, the code provides three characters K28.1, K28.5 and K28.7 which are defined as containing a "comma." Comma is defined as a unique digital sequence which will occur with uniform alignment relative to byte boundaries. This means, absent transmission error, that the comma sequence cannot occur by misalignment of any valid data or command code in combination with other valid code. The binary 10 bit 0011111XXX has this characteristic. Several codes are defined which contain the comma sequence. The ANSI X3T9.3 Fibre Channel Standard Working Group has selected one such code, K28.5.5, and has established its use as the first byte of all delimiters and primatives. Each delimeter and primitive is defined as a four byte set. In the Fibre Channel Standard, K28.5 is not permitted to be followed by K28.1 or K28.7 in any of the defined command ordered sets, such as Start of Frame (SOF), End of Frame (EOF) or primitives such as the Idle (I) or Receiver Ready (RRDY).
In view of the above rules, prior 8B/10B receiver systems employed the detection by the receiver of a single comma as a sufficient condition to send resynch flag to initiate synchronization or resynchronization of the data byte boundaries in the receiver.
While the K28.5 code is unique and cannot be formed by valid aliased code, if there are transmission errors, such as 1 bit or 2 bit errors, the K28.5 can be randomly created which byte would not necessarily create a detectable disparity error. In existing 8B/10B decoders, this condition can cause a misalignment of data byte boundaries and result in long runs of erroneous data decoding.
Accordingly, it is an object of this invention to provide a method and apparatus providing a type of redundancy check before a synchronization or resynchronization is allowed.